Час 9 - Понављање¶
На овом часу говорићемо о:
понављању делова програма;
понављању делова програма.
У природи постоје процеси који се непрестано или с времена на време понављају (нпр. плима и осека). Као и у природи, у програмирању је, за решавање појединих задатака, неопходно да се неки делови програма изврше више пута.
Програми код којих се одређени кораци понављају више пута називају се циклични програми или програми понављања.
Да се једна иста наредба не би писала више пута, постоји програмска структура петље (циклуси) која омогућава понављање једне или више наредби. За такве програме кажемо да садрже понављања, које називамо циклуси.
Понављање наредби је врло честа појава у програмирању.
МејкКод садржи три врсте блокова у које се умећу други блокови чије извршавање треба да се понови:
одређени број пута:
Овај блок треба да користимо када унапред знамо тачан број понављања (каже се и итерација).
бесконачан број пута (непрестано, све док корисник не заустави програм):
То је један од најчешће коришћених блокова. Његово извршавање зауставља се кликом на дугме за престанак рада програма ().
све док не буде испуњен одређени услов:
Овај блок треба да користимо када не знамо колико је пута потребно извршити блокове унутар блока за понављање и зато желимо да се оне извршавају све док не буде испуњен одређени услов.
Хајде да направимо програм којим се активира звук који се понавља одређени број пута сваки пут када корисник помери микробит.
Фаза 1
Разумевање проблема: Када се протресе или направи било какав покрет са микробит уређајем поновиће се звук 3 пута.
Корак 1: Детектуј покрет
Корак 2: Понови звук три пута
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање.
На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Да бисмо могли да детектујемо било какав покрет у простор за програмирање превлачимо блок on shake из категорије Input:
Како желимо да поновимо звук три пута, у блок on shake превлачимо блок repeat .. for из категорије Loops. У делу за унос вредности (броја) уносимо број 3.
У горњи блок ћемо превући блок play tone … for… из категорије Music којим се репродукује звук.
У датом блоку из падајућих листа бирамо тон и дужину истог.
Коначан изглед програма:
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме .
2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
Након тестирања и анализе, постоји грешка, јасно треба да се чује три пута звук.
Грешка 1. Не чује се јасно понављање звука.
Исправљање грешака. Да бисмо постигли да се јасно звук чује три пута увешћемо блок pause .. из категорије Basic. Поставићемо да је временски интервал након кога се понавља звук 1 секунда (или 1000 милисекунди).
Након исправљеног кода, коначан изглед програма:
Поново тестирамо програм. Сада он ради како треба.
Хајде да направимо још један програм којим се активира паљење лед диодица на средини екрана микробита све док је температура у просторији мања од 30.
Фаза 1
Разумевање проблема: Све док је измерена температура мања од 30 пали се лед диода на средини екрана микробита.
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање. На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Да бисмо извршили одређене наредбе (паљење лед диода) док не буде испуњен неки услов (температура мања од 30), у блок forever превлачимо блок while..do..:
Изглед кода:
Да бисмо упалили лед диоду на средини екрана, тачније на позицији (2, 2) из менија Led превлачимо блок: .
Коначан изглед програма:
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме .
2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
Размисли:
Пажљиво проучи горње блокове. Шта се дешава када температура порасте, и буде већа од 30? Зашто?
Допуни горњи кôд како би лед диода била упаљена само док је температура мања од 30.
Могуће решење: https://makecode.microbit.org/_92LeH58vY4je
Сећаш се задатка из Лекције 3 – Унос података, помоћу кога смо укључивали лед диоде на главној дијагонали екрана микробита.
Фаза 1
Разумевање проблема: Главна дијагонала представља линију која повезује горњи леви угао екрана са доњим десним. Тај задатак смо решили линијским програмом, ређајући блокове један за другим.
Изглед кода је следећи:
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање.
На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Међутим, овај задатак ћемо решити елегантније користећи блок . (О променљивима ћемо причати детаљније у следећој лекцији, можеш их схватити као „чуваре“ различитих вредности, било нумеричких било текстуалних).
У блок forever превлачимо блок for .. from to … Граница од које креће бројање је 0, а до које се завршава је 4, зато што је у овом случају положај лед диода на екрану микробита дефинисан по хоризонтали и вертикали од 0 до 4.
Изглед кода:
Корак по корак извршавање блока for .. from to …
Извршавање кода на екрану микробита |
||
---|---|---|
index = 0 |
||
index = 1 |
||
index = 2 |
||
index = 3 |
||
index = 4 |
Блок ће се поновити пет пута.
Коначан изглед кода:
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме .
2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
- Шта смо научили?
да програми код којих се одређени блокови понављају више пута називају се циклични програми или програми понављања.
да постоје различити блокови за понављање (бројачки, бесконачни, условни) и када се они користе.
да се бројачки извршавају када тачно знамо колико ће се пута поновити нека радња.
да се условна понављања користимо када не знамо колико је пута потребно извршити неку радњу. Тај блок се извршава све док не буде испуњен одређени услов.
које вредности узима index у блоку понављања, тачније која је почетна, а која крајња вредност.
Квиз¶
- На екрану ће бити приказано срце.
- Твој одговор није тачан. Покушај поново!
- На екрану ће бити приказано срце све док је дугме А притиснуто.
- Браво! Твој одговор је тачан.
- На екрану ће бити приказано срце све док је температура већа од 30.
- Твој одговор није тачан. Покушај поново!
- На екрану неће бити приказано ништа.
- Твој одговор није тачан. Покушај поново!
Q-47: Пажљиво проучи код:
Шта ће бити приказано на микробиту?
- На екрану ће бити приказана измерена тренутно вредност температуре и срце.
- Твој одговор није тачан. Покушај поново!
- На екрану ће три пута бити приказано срце.
- Твој одговор није тачан. Покушај поново!
- На екрану ће три пута бити приказана измерена тренутна вредност температура и срце.
- Браво! Твој одговор је тачан.
- На екрану неће бити приказано ништа.
- Твој одговор није тачан. Покушај поново!
Q-48: Пажљиво проучи код:
Шта ће бити приказано на микробиту?
- На екрану ће бити редом бројеви од 0 до 4.
- Браво! Твој одговор је тачан.
- На екрану ће бити приказан број 5.
- Твој одговор није тачан. Покушај поново!
- На екрану ће пет пута бити приказан број 4.
- Твој одговор није тачан. Покушај поново!
- На екрану неће бити приказано ништа.
- Твој одговор није тачан. Покушај поново!
Q-49: Пажљиво проучи код:
Шта ће бити приказано на микробиту?
- На екрану ће се четири пута појавити срце (симулација рада срца).
- Твој одговор није тачан. Покушај поново!
- На екрану ће се приказати срце.
- Твој одговор није тачан. Покушај поново!
- На екрану неће бити приказано ништа.
- Браво! Твој одговор је тачан.
Q-50: Пажљиво проучи код:
Шта ће бити приказано на микробиту?